Skip to main content
Version: 1.0.0

六、系统升级

系统升级是指将操作系统和系统软件从当前版本更新至新版本的过程,新版本通常会提供一些新功能、安全补丁和性能改进。不同产品类型对系统升级方式的需求存在差异,目前 SDK 支持(或计划支持)多种升级方式,包括 microSD 卡烧录 eMMC 升级、OTA 升级、文件替换升级等,以下将分别进行详细说明。

6.1 microSD卡 烧录 eMMC 升级

可以参考 「AIBOX 快速开始」文档的「制作启动卡」章节 制作一张 microSD 启动卡,然后修改 bootfs 分区里的 config.txt 文件,将 microSD 启动卡修改成烧录卡,具体改动如下所示:

# boot_mode=initramfs
boot_mode=burn

完成配置修改后,插入 microSD 卡后按复位键重启设备,就可以在串口终端上看到系统启动并执行 eMMC 烧录的完整过程:

Starting burn.mmc0: /dev/mmcblk1 fs info saved in /tmp/tmp.burnZ9k6kf
Copy raw: /dev/mmcblk1 -> /dev/mmcblk0, 6144 bytes...
6144+0 records in
6144+0 records out
Copy raw: /dev/mmcblk1 -> /dev/mmcblk0 success
src: /dev/mmcblk1p1:vfat:bootfs -> /dev/mmcblk0p1:vfat:bootfs
mkfs.fat 4.2 (2021-01-31)
Cannot initialize conversion from codepage 850 to ANSI_X3.4-1968: Invalid argument
Cannot initialize conversion from ANSI_X3.4-1968 to codepage 850: Invalid argument
Using internal CP850 conversion table
mkfs.fat: Warning: lowercase labels might not work properly on some systems
src: /dev/mmcblk1p2:ext4:rootfs -> /dev/mmcblk0p2:ext4:rootfs
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: 0/262144 done
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 3e680df8-1dd2-11b2-821b-5d4456229a89
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Allocating group tables: 0/8 done
Writing inode tables: 0/8 done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: 0/8 done

Copy /dev/mmcblk1p1 -> /dev/mmcblk0p1...
Copy /dev/mmcblk1p1 -> /dev/mmcblk0p1 success.
Copy /dev/mmcblk1p2 -> /dev/mmcblk0p2...
Copy /dev/mmcblk1p2 -> /dev/mmcblk0p2 success.
boot_mode found, force set to "boot"!
100000+0 records in
100000+0 records out

烧录过程通常需要数分钟时间,完成后即不再需要 microSD 卡,当系统有如下打印时,可直接拔除 microSD 卡,系统会自动重启:

Waiting for SD card to be removed...

注意: 烧录完成后 Ubuntu 系统第一次启动时会进行文件系统初始化等关键动作,此过程大概持续几分钟左右,期间请勿随意断电。

6.2 OTA 烧录 eMMC

如果开发套件​选配了 eMMC 组件,则可采用系统从 eMMC 启动,必要时通过 OTA 方式重新烧录 eMMC 以实现系统升级的方案。

  1. 将工程文件中的 /output/current/images/tps-update.swu 文件拷贝到 microSD 卡的 rootfs/home/tps 目录下。此文件大小有 3GB 左右,拷贝过程需要一定时间,请耐心等待操作完成。

  2. 修改 microSD 启动卡 bootfs 分区中 config.txt 配置文件,将 boot_mode=initramfs 修改为 boot_mode=ota

boot_mode=ota
  1. 插入 microSD 卡后按复位键重启设备,就可以在串口终端上看到系统启动并下载 OTA 升级文件的过程:
Try loading extra environment from oem.ini
No extra environment found, ignoring

ini: Imported ota_serverip as 192.168.56.99
ini: Imported force_pxe as false
ini: Imported ethact as eth0
ini: Imported serverip as 192.168.56.99
ini: Imported rootpath as /srv/nfs/rootfs
ini: Imported nfs as false
ini: Imported disable_eeprom as false
ini: Imported disable_autoreboot as true
ini: Imported sata as off
ini: Imported wifi as off
ini: Imported bt as off
ini: Imported 4g_5g_modem as off
ini: Imported board_power_monitor as off
ini: Imported cpu_max_freq as 1584000000
ini: Imported cpu_min_freq as 1000000000
ini: Imported eth0_tx_delay as 41
ini: Imported eth0_rx_delay as 23
ini: Imported eth1_tx_delay as 50
ini: Imported eth1_rx_delay as 26
ini: Imported eth2_tx_delay as 126
ini: Imported eth2_rx_delay as 126
ini: Imported eth3_tx_delay as 26
ini: Imported eth3_rx_delay as 25
ini: Imported boot_mode as ota

6.3 文件替换升级

在少数场景下可以采用手动替换文件的方式对系统进行升级,例如需要快速修复系统关键文件等情况。这种升级方式存在数据丢失、硬件损坏等一系列风险,所以一般仅局限于特殊场景下使用,建议由接受过原厂专业培训的人员进行操作或者提供技术指导。

文件替换操作需要在开发套件​上的 Ubuntu 系统环境下执行,用户可以通过串口工具登录到开发套件​,然后根据实际需求选择合适的操作方式。

6.3.1 备份原文件

在进行文件替换之前,建议备份所有关键文件,以防升级过程中出现问题能够恢复到原始状态。

6.3.2 替换镜像

AIBOX 平台启动后,将新的镜像文件上传到开发套件​的 /boot 目录下替换原有文件即可。上传文件的具体方法取决于用户的网络环境和开发套件​的配置。以下是两种常见的方法:

  • 通过 SCP 上传: 使用 SCP(Secure Copy Protocol)可以从本地计算机安全地复制文件到远程服务器。命令格式如下:
scp /path/to/new/uImage root@ip:/boot/firmware

其中 /path/to/new/uImage 是本地新镜像文件的路径,root@ip 是远程开发套件​的用户名和 IP 地址。将文件替换好后重启生效。

  • 通过 USB 设备上传: 将 microSD 启动卡通过 USB 设备连接到电脑,使用 cp 命令将镜像文件复制文件到 microSD 卡的 /bootfs 目录中。
cp /path/to/new/uImage /run/media/bootfs

然后将替换好镜像的 microSD 卡重新插入开发套件​中启动。

6.3.3 验证升级

文件替换完成后,可以通过以下方法验证升级是否成功:

  • 重启开发套件​,检查是否能够正常启动。
  • 检查关键文件的版本信息,确认已更新到新版本。